草庐IT

c++ - CreateFile 和长设备名

全部标签

windows - FILE_FLAG_NO_BUFFERING 如何与向通信设备打开的句柄交互?

正如标题所说,我正在编写一个网络程序,我在其中使用CreateFile打开网络驱动程序的句柄,并且我一直在试验NO_BUFFERING标志。大多数文档甚至都不会提及将其与通信设备一起使用,而那些这样做的文档(又名MSDN引用等)只是简单地提到您可以。有谁知道这会如何影响与设备的通信? 最佳答案 这是一个设备驱动程序实现细节,您在CreateFile()调用中指定的选项在IRP_MJ_REQUESTrequest中传递.我链接的那个是用于文件系统的,非常漂亮。通过IrpSp->Parameters.Create.Options链接单击

c - c中串口读取,使用WinApi函数; WaitCommEvent 失败

我尝试用C语言编写一个基于事件的小型应用程序以读取串行端口(来源如下)。我的程序是使用WinApi函数。comport.c具有用于处理COM端口(打开、读取、写入)的函数,utils.c具有一些辅助函数。我的程序总是产生以下输出:COM1isselectedtobelistened.GetCommMaskresult:0x00000029(EV_RXCHAR:0x0001,EV_CTS:0x0008,EV_RLSD:0x0020)Pressanykeytoproceed...I/Oispending(WaitCommEvent)...I/Oispending(WaitCommEvent

c - 如何在 NDIS 6 过滤器驱动程序中启用 802.11 监控模式 (DOT11_OPERATION_MODE_NETWORK_MONITOR)?

我已将WinPcap移植到NDIS6过滤器驱动程序:https://github.com/nmap/npcap.但它仍然不支持捕获所有802.11native数据包(如未捕获控制和管理帧)。我注意到有一种方法可以使用WlanSetInterface函数为无线适配器设置DOT11_OPERATION_MODE_NETWORK_MONITOR。但是这次调用成功了(返回值是OK的,这次调用后我的wifi网络断开了)。但问题是我无法使用Wireshark在Wi-Fi接口(interface)上看到任何数据包,甚至连假以太网形式的802.11数据也看不到。所以肯定有问题。我知道从NDIS6和vi

c - "cannot find -lcrypto -lssl"在带有 MinGW 的 Windows 上使用 OpenSSL

尝试openssl的c代码,在命令提示符下编译时出现此错误。c:\openssl>gcc-lssl-lcrypto-otesttest.c-IC:\openssl\include\c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe:cannotfind-lsslc:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe:cannotfind-lcryptocollect2.exe:error:ldreturned1exits

windows - 设备不存在时是否可以完全安装驱动程序?

是否可以在插入物理设备之前在系统上完全安装(而不仅仅是预安装)设备驱动程序?特别是,我正在查看D2XXdriversbyFTDI.他们的驱动程序安装程序有效地运行dpinst.exe,如果您观察该程序的控制台输出,它是这样说的:Nomatchingdevicewasfoundfor'c:\drivers\ftdiport.inf'.Driverwillbeinstalledwhenpluggedin.问题是我还在使用他们的.NET库来访问设备,而且那个库很有趣。如果未安装驱动程序,它会在构造函数中弹出警报。当然,通常的解决办法是简单地插入设备并让驱动程序安装正常完成,但有时这一点会被忽

c - 如何找到鼠标按钮 'click' 位置 x 和 y?

我尝试了很多关于搜索获取鼠标的x和y位置的方法在C中的windows控制台内单击,但我找不到所以我我在这里发帖。我正在创建自己的文本编辑器项目(为了好玩),我必须集成一项功能,每当我在控制台内单击时,光标都会移动到它(单击x、y)我不想知道如何移动光标,但我想知道如何获得点击位置。此代码可以接收所有鼠标和键盘鼠标事件,甚至鼠标单击:#include#includeHANDLEhStdin;DWORDfdwSaveOldMode;VOIDErrorExit(LPSTR);VOIDKeyEventProc(KEY_EVENT_RECORD);VOIDMouseEventProc(MOUSE

c - 如何同时处理来自 Stdin Stream 的两个输入,其中一个来自 C 中的数字键盘?

我希望我的程序同时从标准输入流中读取数字键盘和键盘。我不知道这是否可能,这就是我问的原因。我的程序运行正常,但是如果第一个玩家仍然按下箭头,第二个玩家不能通过同时按下z/x来移动Racket,除非第一个玩家停止按下箭头。#include#include#includevoidfirst_player_arrow_press();voidsecond_player_Z_or_X_press();void*second_player();intarrow=0,button_pressed=0;intz=50;intmain(){pthread_tmy_thread;intx=50;char

windows - Vulkan 在 Linux 上找不到物理设备

我一直想使用新的图形APIVulkan,并且已经在Windows7上顺利启动并运行它。但是我无法让Vulkan在Linux上工作。当我尝试运行任何LunarG示例,甚至是我自己的代码时,vkEnumeratePhysicalDevices总是说没有物理设备。这是我的设置:OS:Ubuntu16.04(LTS)[x64]GPU:NvidiaGeforceGT7302GBGDDR5Driver:NVIDIABinarydriver-version364.19fromnvidia-364(opensource)VulkanSDK:LunarGv1.0.17.0[latestversion]我

c - fwrite() 性能下降

我的Windows命令行C应用程序使用fwrite()将接收到的数据连续转储到SSD驱动器上的1GB文件中。数据来自PCIe卡,大小约为16KB,这是我在调用fwrite()时使用的数据计数。在这些情况下,每次fwrite()调用通常需要不到100微秒(使用Windows性能计数器测量)但有异常值需要2秒或更多秒才能完成,导致PCIe中的缓冲区溢出卡片。这些零星的性能下降的原因是什么?我能做些什么来防止它们发生吗?更新#1:部分问题似乎是由SSD驱动器引起的。转储到常规机械HDD时,异常值大约为100毫秒(而不是1000毫秒)。更新#2:似乎fwrite()减速发生在写入前1.5GB数

c - 执行从 Windows 服务捕获屏幕截图的程序

我正在编写一个Windows服务,它将管理一些捕获屏幕截图的代理程序。代理程序运行良好,完全没有问题-它只是截取屏幕截图并将其保存到bmp文件中。但是当我尝试从我的服务中执行这个代理程序时-它不起作用,我得到的只是黑色图片(就好像我试图直接从我的服务中捕获屏幕截图一样)我的服务内部代码是:ServiceStatus.dwCurrentState=SERVICE_RUNNING;SetServiceStatus(hStatus,&ServiceStatus);SHELLEXECUTEINFOseInfo;seInfo.cbSize=sizeof(SHELLEXECUTEINFO);seI